$(function () {
    var $username = $('#user_name');
    var $realName = $('#real_name');
    var $pwd = $('#pwd');
    var $cpwd = $('#cpwd');
    var $phone = $('#phone');

    // 绑定 blur 事件
    function bindBlurEvent($element, validateFunc) {
        $element.on('blur', function () {
            validateFunc();
        });
    }

    bindBlurEvent($username, check_user_name);
    bindBlurEvent($realName, check_real_name);
    bindBlurEvent($pwd, check_pwd);
    bindBlurEvent($cpwd, check_cpwd);
    bindBlurEvent($phone, check_phone);

    // 协议勾选
    $('#allow').on('click', function () {
        if ($(this).is(':checked')) {
            $(this).siblings('span').hide().text('');
        } else {
            $(this).siblings('span').text('请勾选同意').show();
        }
    });

    // 用户名验证
    function check_user_name() {
        var val = $username.val();
        if (val.length < 5 || val.length > 20) {
            $username.next().text('请输入5-20个字符的用户名').show();
            return false;
        } else {
            $username.next().hide().text('');
            return true;
        }
    }

    // 真实姓名验证
    function check_real_name() {
        var val = $realName.val();
        if (!val.trim()) {
            $realName.next().text('请输入真实姓名').show();
            return false;
        } else {
            $realName.next().hide().text('');
            return true;
        }
    }

    // 密码验证
    function check_pwd() {
        var val = $pwd.val();
        if (val.length < 8 || val.length > 20) {
            $pwd.next().text('密码最少8位，最长20位').show();
            return false;
        } else {
            $pwd.next().hide().text('');
            return true;
        }
    }

    // 确认密码验证
    function check_cpwd() {
        var pass = $pwd.val();
        var cpass = $cpwd.val();
        if (pass !== cpass) {
            $cpwd.next().text('两次输入的密码不一致').show();
            return false;
        } else {
            $cpwd.next().hide().text('');
            return true;
        }
    }

    // 手机号验证
    const REGEX_PHONE = /^1[3-9]\d{9}$/;

    function check_phone() {
        var val = $phone.val();
        if (!REGEX_PHONE.test(val)) {
            $phone.next().text('你输入的手机号格式不正确').show();
            return false;
        } else {
            $phone.next().hide().text('');
            return true;
        }
    }

    // 表单提交验证
    $('#reg-btn').on('click', function (e) {
        e.preventDefault(); // 阻止默认提交行为

        var valid =
            check_user_name() &&
            check_real_name() &&
            check_pwd() &&
            check_cpwd() &&
            check_phone();

        var allowChecked = $('#allow').is(':checked');
        if (!allowChecked) {
            $('#allow').siblings('span').text('请勾选同意').show();
            return false;
        } else {
            $('#allow').siblings('span').hide().text('');
        }

        if (valid && allowChecked) {
            let obj = {
                username: $username.val(),
                password: $pwd.val(),
                realName: $realName.val(),
                phone: $phone.val()
            };

            $.ajax({
                type: 'POST',
                url: '/user/register',
                contentType: 'application/json',
                data: JSON.stringify(obj),
                success: function (data) {
                    if (data.code === 200) {
                        alert('注册成功');
                        window.location.href = 'login';
                    } else {
                        alert(data.message);
                    }
                }
            });
            return true;
        } else {
            return false;
        }
    });
});
